/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelos_programa;

import java.awt.Dimension;
import java.awt.image.BufferedImage;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.*;
import java.util.ArrayList;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.statistics.HistogramDataset;

public class Grafico {
    
    private BufferedImage _image ;//para la imagen en memoria
    private JFreeChart chart ;// el grafico
    private Dimension d;//dimension del grafico
    
    public Grafico(){
    }
    /* Crea el grafico */
    public void crear_grafico_de_barras(Dimension d, ArrayList a, String serie, String titulo){
        this.d= d;           
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            for (int i = 0; i<a.size(); i++)
            dataset.addValue((Number) a.get(i), serie, "" + i);
     
            //Vemos que <strong>los valores son añadidos al DataSet con un addValue()</strong>.
     
            //Una vez completado el dataset, se crea el grafico de barras en base a el.
     
            chart = ChartFactory.createBarChart3D(titulo, null,null, dataset, PlotOrientation.VERTICAL, true, true, false);
        
            _image = chart.createBufferedImage(this.d.width,this.d.height);
            System.out.println("grafico de barras creado");     
    }
    
    public void crear_grafico_de_lineas(Dimension d, ArrayList a, String serie, String titulo){
        this.d= d;           
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            for (int i = 0; i<a.size(); i++)
            dataset.addValue((Number) a.get(i), serie, "" + i);
     
            //Vemos que <strong>los valores son añadidos al DataSet con un addValue()</strong>.
     
            //Una vez completado el dataset, se crea el grafico de barras en base a el.
     
            chart = ChartFactory.createBarChart(titulo, null,null, dataset, PlotOrientation.VERTICAL, true, true, false);
        
            _image = chart.createBufferedImage(this.d.width,this.d.height);
            System.out.println("grafico de linea creado");     
    }
    
    public void crear_grafico_histograma(Dimension d, double vector[], String serie, String titulo, int intervalos){
            this.d= d;           
            HistogramDataset dataset = new HistogramDataset(); 

            dataset.addSeries(serie, vector, intervalos); 

     

            //Una vez completado el dataset, se crea el grafico de barras en base a el.
             chart = ChartFactory.createHistogram("Histograma",null,null,dataset,PlotOrientation.VERTICAL,true,true,false); 
            
        
            _image = chart.createBufferedImage(this.d.width,this.d.height);
            System.out.println("histograma creado");     
    }
    
    public void crear_grafico_de_lineas_2(Dimension d, ArrayList a,ArrayList b, String serie1, String serie2, String titulo){
        this.d= d;           
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            for (int i = 0; i<a.size(); i++){
                dataset.addValue((Number) a.get(i), serie1, "" + i);
                dataset.addValue((Number) b.get(i), serie2, "" + i);
            }
            
     
            //Vemos que <strong>los valores son añadidos al DataSet con un addValue()</strong>.
     
            //Una vez completado el dataset, se crea el grafico de barras en base a el.
     
            chart = ChartFactory.createLineChart(titulo, null,null, dataset, PlotOrientation.VERTICAL, true, true, false);
        
            _image = chart.createBufferedImage(this.d.width,this.d.height);
            System.out.println("grafico de linea creado");     
    }
    
    
    /* carga la imagen que esta en memoria en el objeto jLabel */
    public void cargar_grafico(JLabel lb){
        ImageIcon imagenFondo = new ImageIcon(_image);  
        lb.setIcon(imagenFondo);
        lb.repaint();
    }  
 
}